Package de.yaams.maker.programm.project

Source Code of de.yaams.maker.programm.project.ProjectManagement

/**
*
*/
package de.yaams.maker.programm.project;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;

import de.yaams.maker.helper.FileHelper;
import de.yaams.maker.helper.XMLHelper;
import de.yaams.maker.helper.extensions.ExtentionManagement;
import de.yaams.maker.helper.extensions.IExtension;
import de.yaams.maker.helper.gui.list.BasisListElement;
import de.yaams.maker.programm.YAamsCore;
import de.yaams.maker.programm.project.empty.EmptyProjectType;
import de.yaams.maker.programm.project.tab.ProjectOptionManager;

/**
* @author abt
*
*/
public class ProjectManagement {

  protected static ArrayList<BasisListElement> projects;
  protected static HashMap<String, ProjectType> types;
  protected static ProjectType empty;

  /**
   * Create a new ProjectCache
   */
  public static void start() {
    projects = new XMLHelper<ArrayList<BasisListElement>>().loadXML(new File(YAamsCore.programPath, "projects.xml"));
    types = new HashMap<String, ProjectType>();
    empty = new EmptyProjectType();

    // add save
    ExtentionManagement.add(ExtentionManagement.SAVE, new IExtension() {

      @Override
      public void work(HashMap<String, Object> objects) {
        save();

      }
    });

    // found nothing?
    if (projects == null) {
      projects = new ArrayList<BasisListElement>();
    } else {
      // for (BasisListElement p : projects) {
      // ((Project) p).load();
      // }
    }

    // add options
    ExtentionManagement.add(Project.EXLOAD, new IExtension() {

      @Override
      public void work(HashMap<String, Object> objects) {
        Project p = (Project) objects.get("project");

        // exist options?
        if (p.getType() != ProjectManagement.getType("empty") && !p.getObjects().containsKey(ProjectOptionManager.ID)) {
          p.addObjManager(new ProjectOptionManager(), ProjectOptionManager.ID);

        }
      }
    });

    // crypt projects
    ExtentionManagement.add("close", new IExtension() {

      @Override
      public void work(HashMap<String, Object> objects) {
        for (BasisListElement p : projects) {
          ((Project) p).closeIt();
        }

      }
    });
  }

  /**
   * Load a project
   *
   * @param path
   * @return
   */
  public static Project getProject(String hash) {
    for (BasisListElement p : projects) {
      if (((Project) p).getHash().equals(hash)) {
        return (Project) p;
      }
    }
    throw new IllegalArgumentException("Project for hash " + hash + " doesn't exist");
  }

  /**
   * Load a project
   *
   * @param path
   * @return
   */
  public static ProjectType getType(String id) {
    // check it
    if (!types.containsKey(id)) {
      return empty;
    }

    return types.get(id);
  }

  /**
   * Load a project
   *
   * @param path
   * @return
   */
  public static void registerType(ProjectType p) {
    types.put(p.getType(), p);
  }

  /**
   * Load a project
   *
   * @param path
   * @return
   */
  public static void save() {
    FileHelper.saveXML(new File(YAamsCore.programPath, "projects.xml"), projects);
  }

  /**
   * @return the projects
   */
  public static ArrayList<BasisListElement> getProjects() {
    return projects;
  }
}
TOP

Related Classes of de.yaams.maker.programm.project.ProjectManagement

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.